package opf5.entities.notificaciones;

import opf5.entities.dominio.Inscripcion;
import opf5.entities.dominio.Jugador;
import opf5.entities.dominio.Partido;
import opf5.entities.partidos.PartidoDecorator;
import opf5.utilidades.Email;
import opf5.utilidades.EnviadorDeEmail;

public class PartidoNotificadorCompletoDecorator extends PartidoDecorator {
	private EnviadorDeEmail enviadorDeEmail;
	private Jugador administrador;
	
	public PartidoNotificadorCompletoDecorator(Partido partido,
			EnviadorDeEmail e,
			Jugador admin) {
		super(partido);
		enviadorDeEmail = e;
		administrador = admin;
	}
	
	@Override
	public void inscribir(Inscripcion nuevaInscripcion) {
		boolean habiaLugar = hayLugar();
		
		super.inscribir(nuevaInscripcion);
		
		if (habiaLugar) notificarSiEstaCompleto();
	}

	private void notificarSiEstaCompleto() {
		if (! hayLugar())
			enviarEmailDeNotificacionAlAdministrador();
	}

	private void enviarEmailDeNotificacionAlAdministrador() {
		Email email = new Email(
				administrador.getEmail(),
				"Partido Completo",
				"El partido esta completo");
		
		enviadorDeEmail.enviarEmail(email);
	}
}
